<?php

declare(strict_types=1);

namespace App\CustHub\Dto;

use App\Common\Dto\DataObject;

class AddContactWayDto extends DataObject
{
    /**
     * 编辑的时候传的
     * @var string
     */
    public string $config_id='';

    /**
     * 联系方式类型,1-单人, 2-多人
     * @var int
     */
    public int $type;

    /**
     * 场景，1-在小程序中联系，2-通过二维码联系
     * @var int
     */
    public int $scene;

    /**
     * 在小程序中联系时使用的控件样式，详见附表
     * @var int
     */
    public int $style=1;

    /**
     * 备注
     * @var string
     */
    public string $remark='';
    /**
     * 外部客户添加时是否无需验证，默认为true
     * @var bool
     */
    public int $skip_verify=0;
    /**
     * 企业自定义的state参数，用于区分不同的添加渠道，在调用“获取客户详情”时会返回该参数值，不超过30个字符
     * @var string
     */
    public string $state='';
    /**
     * 使用该联系方式的用户userID列表，在type为1时为必填，且只能有一个
     * @var array
     */
    public array $user=[];
    /**
     * 使用该联系方式的部门id列表，只在type为2时有效
     * @var array
     */
    public array $party=[];
    /**
     * 是否临时会话模式，true表示使用临时会话模式，默认为false
     * @var bool
     */
    public bool $is_temp=false;
    /**
     * 临时会话二维码有效期，以秒为单位。该参数仅在is_temp为true时有效，默认7天，最多为14天
     * @var int
     */
    public int $expires_in=7*24*3600;
    /**
     * 临时会话有效期，以秒为单位。该参数仅在is_temp为true时有效，默认为添加好友后24小时，最多为14天
     * @var int
     */
    public int $chat_expires_in=7*24*3600;
    /**
     * 可进行临时会话的客户unionid
     * @var string
     */
    public string $unionid='';
    /**
     * 结束语，可参考“结束语定义”
     * {
     * "text":
     * {
     * "content":"文本消息内容"
     * },
     * "image":
     * {
     * "media_id": "MEDIA_ID"
     * },
     * "link":
     * {
     * "title": "消息标题",
     * "picurl": "https://example.pic.com/path",
     * "desc": "消息描述",
     * "url": "https://example.link.com/path"
     * },
     * "miniprogram":
     * {
     * "title": "消息标题",
     * "pic_media_id": "MEDIA_ID",
     * "appid": "wx8bd80126147dfAAA",
     * "page": "/path/index"
     * }
     * }
     * @var array
     */
    public array $conclusions=[];



    public function getType(): int
    {
        return $this->type;
    }
    public function setType(int $type): AddContactWayDto
    {
        $this->type = $type;
        return $this;
    }
    public function getScene(): int
    {
        return $this->scene;
    }
    public function setScene(int $scene): AddContactWayDto
    {
        $this->scene = $scene;
        return $this;
    }
    public function getStyle(): int
    {
        return $this->style;
    }
    public function setStyle(int $style): AddContactWayDto
    {
        $this->style = $style;
        return $this;
    }
    public function getRemark(): string
    {
        return $this->remark;
    }
    public function setRemark(string $remark): AddContactWayDto
    {
        $this->remark = $remark;
        return $this;
    }
    public function getSkipVerify(): int
    {
        return $this->skip_verify;
    }
    public function setSkipVerify(int $skip_verify): AddContactWayDto
    {
        $this->skip_verify = $skip_verify;
        return $this;
    }
    public function getState(): string
    {
        return $this->state;
    }
    public function setState(string $state): AddContactWayDto
    {
        $this->state = $state;
        return $this;
    }
    public function getUser(): array
    {
        return $this->user;
    }
    public function setUser(array $user): AddContactWayDto
    {
        $this->user = $user;
        return $this;
    }
    public function getParty(): array
    {
        return $this->party;
    }
    public function setParty(array $party): AddContactWayDto
    {
        $this->party = $party;
        return $this;
    }
    public function getIsTemp(): bool
    {
        return $this->is_temp;
    }
    public function setIsTemp(bool $is_temp): AddContactWayDto
    {
        $this->is_temp = $is_temp;
        return $this;
    }
    public function getExpiresIn(): int
    {
        return $this->expires_in;
    }
    public function setExpiresIn(int $expires_in): AddContactWayDto
    {
        $this->expires_in = $expires_in;
        return $this;
    }
    public function getChatExpiresIn(): int
    {
        return $this->chat_expires_in;
    }
    public function setChatExpiresIn(int $chat_expires_in): AddContactWayDto
    {
        $this->chat_expires_in = $chat_expires_in;
        return $this;
    }
    public function getUnionid(): string
    {
        return $this->unionid;
    }
    public function setUnionid(string $unionid): AddContactWayDto
    {
        $this->unionid = $unionid;
        return $this;
    }
    public function getConclusions(): array
    {
        return $this->conclusions;
    }
    public function setConclusions(array $conclusions): AddContactWayDto
    {
        $this->conclusions = $conclusions;
        return $this;
    }


    public function getConfigId(): string
    {
        return $this->config_id;
    }
    public function setConfigId(string $config_id): AddContactWayDto
    {
        $this->config_id = $config_id;
        return $this;
    }

}